#include <STC15F2K60S2.H>
#include <stdio.h>
#include <string.h>
#include "ESP8266_Uart2.h"
//#include "UART1.h"

//ESP8266采用了串口2定时器2,以及printf函数被占用
//P1^0:接ESP8266的TX
//P1^1:接ESP8266的RX

#define S2TI 0x02        //串口2发送中断请求标志位


unsigned char xdata ESP8266_Rx_Data[RxDataLong];	//数据保存数组
unsigned char xdata ESP8266_Rx_New_Data = 0;			//获得的一个新数据
unsigned char xdata ESP8266_len = 0;							//恢复数组长度为0

/*****************************************************
*函数名称：putchar(char c)
*函数功能：发送字符到串口
*入口参数：char c
*出口参数：c
*****************************************************/
//注意只能用于一个串口
char putchar(char c)
{
	//输出重定向到串口
	S2BUF = c;
	while((S2CON&S2TI)==0);
	S2CON&=~S2TI;
	return c; //返回给函数的调用者printf
}

void ESP8266_Uart2_Init(void)
{
	S2CON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x04;		//定时器2时钟为Fosc,即1T
	T2L = 0xE8;		//设定定时初值
	T2H = 0xFF;		//设定定时初值
	AUXR |= 0x10;		//启动定时器2
	
	IE2 = 0x01;		//打开接收中断
	EA = 1;
}

/*****************************************************
*函数名称：UART_ReceiveByte(void)
*函数功能：uart收到数据并进行数据解析
*入口参数：void
*出口参数：void
*****************************************************/
void ESP8266_Uart2_ReceiveByte(void)
{
	ESP8266_Rx_New_Data = S2BUF;		//收到数据字节
	ESP8266_Rx_Data[ESP8266_len]	=	ESP8266_Rx_New_Data;	//将数据传入到数组中
	if(ESP8266_len>=RxDataLong-1)
	{
		ESP8266_len = 0;
	}
	else
	{
		ESP8266_len++;
	}
}

